package com.gsk.europepharma.salesReport.struts.actions;

import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.gsk.europepharma.salesReport.utils.MixProduit;
import com.gsk.europepharma.salesReport.utils.Produit;

/**
 * Gestion des donnees pour l'affichage de tous les produits (pop-up du graphe dynamique).
 */
public class DataProduits extends Action {
	
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		HttpSession sessionObject = request.getSession();
		
		// Liste de tous les produits ordonnes
		MixProduit mixProduit = (MixProduit) sessionObject.getAttribute("mixProduit");
		
		HashMap hm = new HashMap();
		
		JSONArray jsonArrayRegroupements = new JSONArray();
		
		JSONObject regroupement = null; 
		
		JSONObject prod = new JSONObject();
		
		JSONObject jsonObjectId = new JSONObject(); 
		
		JSONArray jsonArrayProduits = new JSONArray();
		
		if (mixProduit != null && mixProduit.getProduits() != null) {
			for (Produit produit : mixProduit.getProduits()) {
				if (produit.getIdPrstn() == 0) {
					if (regroupement != null) {
						regroupement.put("children", jsonArrayProduits);
						jsonArrayRegroupements.add(regroupement);
					}
					regroupement = new JSONObject();
					JSONObject data = new JSONObject(); 
					data.put("title", produit.getLibelle());
					data.put("icon", "");
					jsonObjectId = new JSONObject(); 
					jsonObjectId.put("id", produit.getIdRgpt() + "-" + produit.getIdPrstn());
					jsonObjectId.put("selected", produit.getChecked());
					jsonObjectId.put("color", produit.getColor());
					regroupement.put("attr", jsonObjectId);
					regroupement.put("data", data);
					jsonArrayProduits = new JSONArray();
				} else {
					prod = new JSONObject();
					JSONObject data = new JSONObject(); 
					data.put("title", produit.getLibelle());
					data.put("icon", "");
					jsonObjectId = new JSONObject(); 
					jsonObjectId.put("id", produit.getIdRgpt() + "-" + produit.getIdPrstn());
					jsonObjectId.put("selected", produit.getChecked());
					jsonObjectId.put("color", produit.getColor());
					prod.put("attr", jsonObjectId);
					prod.put("data", data);
					jsonArrayProduits.add(prod);
				}
			}
			if (regroupement != null && jsonArrayProduits != null) {
				regroupement.put("children", jsonArrayProduits);
				jsonArrayRegroupements.add(regroupement);
			}
		}
		
		hm.put("datas", jsonArrayRegroupements);
		
		JSONObject json = JSONObject.fromObject(hm);

		response.addHeader("Content-Type", "application/json");
        response.getOutputStream().write(json.toString().getBytes("UTF-8"));
        response.getOutputStream().flush();

		return null;
	}

}
